#ifndef INA199_SENSOR_H
#define INA199_SENSOR_H

#include "stm32f1xx_hal.h"
#include <cstdint>
#include "adc.h"
#include <cmath>
extern ADC_HandleTypeDef hadc1;
class INA199Sensor {
private:
    ADC_HandleTypeDef* hadc;
    uint32_t adcChannel;
    
    // 读取ADC原始值
    uint16_t readAdcRaw();
    
public:
    INA199Sensor(ADC_HandleTypeDef* adcHandle, uint32_t channel);
    
    // 读取输出电压（V）
    float readOutputVoltage();
    
    // 读取电流（A）
    float readCurrent();
    
    // 读取功率（W），假设总线电压为5V
    float readPower(float busVoltage = 5.0f);

    // 静态回调函数（C兼容）
    static void AdcCallback(ADC_HandleTypeDef* hadc);


};

// 在adc_sampling.c中定义传感器实例
static INA199Sensor currentSensorA(&hadc1, ADC_CHANNEL_0); // PA0通道
static INA199Sensor currentSensorB(&hadc1, ADC_CHANNEL_1); // PA1通道

extern "C" void HAL_ADC_ConvCpltCallback(ADC_HandleTypeDef* hadc) ;


#endif // INA199_SENSOR_H    